//
//  CQPopupInfo.h
//  AppCommonUICollect
//
//  Created by ciyouzen on 2019/8/13.
//  Copyright © 2019 dvlproad. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <CJPopupContainer/CJBasePopupInfo.h>
#import "CQPopupEnum.h"

NS_ASSUME_NONNULL_BEGIN

@interface CQPopupInfo: CJBasePopupInfo {
    
}
@property (nonatomic, strong) UIView *viewWithoutPanLine;           /**< 除去顶部下拉线之外的其他视图 */
@property (nonatomic, assign) CGFloat panLineAndSapcingHeight;      /**< 顶部下拉线和间距的高度(更新文本框高度的时候需要使用) */
//@property (nonatomic, assign) CGFloat viewHeightWithoutPanLine;   /**< 除去顶部下拉线之外的其他视图的高度 */

/*
 *  为clearView视图，添加顶部①下拉线Panline区域+②toolbar(没有确认按钮)
 *
 *  @param popupSuperview               弹出视图的父视图view(如果为nil，则会弹出到window上)
 *  @param clearView                    扣去顶部下拉线和顶部工具栏外的干净视图
 *  @param clearViewHeight              本视图未加上顶部下拉线和顶部工具栏前的高度
 *  @param title                        弹出视图的上部toolbar中的title
 *  @param shouldEnableTapBlank         是否允许点击空白区域（常设为YES，来实现点击空白区域来隐藏弹窗的功能）
 *  @param shouldAddPanAction           是否添加仿抖音评论的下拉拖动手势(附对于那些会弹出键盘的视图，一般设为NO，即不添加)
 *  @param popupHideHandle              关闭弹窗的执行方法
 */
+ (CQPopupInfo *)addBottom_panline_toolbarWithoutOK_inView:(nullable UIView *)popupSuperview
                                                 clearView:(UIView *)clearView
                                           clearViewHeight:(CGFloat)clearViewHeight
                                              toolbarTitle:(NSString *)title
                                      shouldEnableTapBlank:(BOOL)shouldEnableTapBlank
                                        shouldAddPanAction:(BOOL)shouldAddPanAction
                                           popupHideHandle:(void(^ _Nonnull)(void))popupHideHandle;

    
/*
 *  为clearView视图，添加顶部①下拉线Panline区域+②toolbar(有确认按钮)(可自定制点击空白区域会不会优先尝试执行确认操作，不行才执行取消操作的事件)
 *
 *  @param popupSuperview                   弹出视图的父视图view(如果为nil，则会弹出到window上)
 *  @param clearView                        扣去顶部下拉线和顶部工具栏外的干净视图
 *  @param clearViewHeight                  本视图未加上顶部下拉线和顶部工具栏前的高度
 *  @param title                            弹出视图的上部toolbar中的title
 *  @param okHandle                         确认事件(通过返回ok事件执行后所得结果及要对弹窗所做的动作来控制隐藏)
            （额外增加toolbarOKEnable参数，因为该确认事件除含toolbar的确认外，还可能要求点击空白区域时候要优先尝试执行确认操作，不行才执行取消操作的事件）
 *  @param shouldEnableTapBlank             是否允许点击空白区域（常设为YES，来实现点击空白区域来隐藏弹窗的功能）
 *  @param shouldAddPanAction               是否添加仿抖音评论的下拉拖动手势(附对于那些会弹出键盘的视图，一般设为NO，即不添加)
 *  @param tapBlankOrPandissmissFirstTryOK  点击空白区域/下拉会不会优先尝试执行确认操作，不行才执行取消操作(NO，则直接执行取消操作)
 *  @param popupHideHandle                  关闭弹窗的执行方法
 */
+ (CQPopupInfo *)addBottom_panline_toolbarWithOK_inView:(nullable UIView *)popupSuperview
                                              clearView:(UIView *)clearView
                                        clearViewHeight:(CGFloat)clearViewHeight
                                           toolbarTitle:(NSString *)title
                                               oKHandle:(CQOKResult(^ _Nonnull)(BOOL toolbarOKEnable, CQOKOperation okOperation))okHandle
                                   shouldEnableTapBlank:(BOOL)shouldEnableTapBlank
                                     shouldAddPanAction:(BOOL)shouldAddPanAction
                                     tapBlankFirstTryOK:(BOOL)tapBlankOrPandissmissFirstTryOK
                                        popupHideHandle:(void(^ _Nonnull)(void))popupHideHandle;

/*
 *  为clearView视图，添加顶部①下拉线Panline区域，并返回显示时候的frame
 *
 *  @param popupSuperview               弹出视图的父视图view(如果为nil，则会弹出到window上)
 *  @param clearView                    扣去顶部下拉线视图外的干净视图
 *  @param clearViewHeight              本视图未加上顶部下拉线前的高度
 （即使本视图最终是由其他视图包着弹出,这里也只输入本视图被干净弹出的高度,实际最终的弹窗高度,内部会自动计算后以最终高度弹出)
 *  @param edgeInsetsType               弹窗与window的(左右下)边距的类型
 *  @param tapBlankViewCompleteBlock    点击空白区域后的操作(为nil时候，点击自动隐藏，非nil时候需要自己调用隐藏)
 *  @param shouldAddPanAction           是否添加仿抖音评论的下拉拖动手势(附对于那些会弹出键盘的视图，一般设为NO，即不添加)
 *  @param panCompleteDismissBlock      拖动结束需要执行dimiss的回调(shouldAddPanAction为NO的时候，此值无效，相当于设为nil)
 *
 *  @return 视图弹出后显示的frame
 */
+ (CQPopupInfo *)addBottom_panline_inView:(nullable UIView *)popupSuperview
                                clearView:(UIView *)clearView
                          clearViewHeight:(CGFloat)clearViewHeight
                           edgeInsetsType:(CQBottomPopupViewEdgeInsetsType)edgeInsetsType
                         tapBlankComplete:(void(^ _Nullable)(void))tapBlankViewCompleteBlock
                       shouldAddPanAction:(BOOL)shouldAddPanAction
                  panCompleteDismissBlock:(void(^ _Nullable)(void))panCompleteDismissBlock;


@end

NS_ASSUME_NONNULL_END
